x86: split struct domain
authorJan Beulich <jbeulich@novell.com>
Tue, 5 Apr 2011 12:02:57 +0000 (13:02 +0100)
committerJan Beulich <jbeulich@novell.com>
Tue, 5 Apr 2011 12:02:57 +0000 (13:02 +0100)
commit1dd3a56b4338962b953545ed16f4de1d1a394189
tree5af2df0c8c1ae58f372f88dac6f19ff1a41f2b29
parent6b063a4a6f44245a727aa04ef76408b2e00af9c7
x86: split struct domain

This is accomplished by converting a couple of embedded arrays (in one
case a structure containing an array) into separately allocated
pointers, and (just as for struct arch_vcpu in a prior patch)
overlaying some PV-only fields with HVM-only ones.

One particularly noteworthy change in the opposite direction is that
of PITState - this field so far lived in the HVM-only portion, but is
being used by PV guests too, and hence needed to be moved out of
struct hvm_domain.

The change to XENMEM_set_memory_map (and hence libxl__build_pre() and
the movement of the E820 related pieces to struct pv_domain) are
subject to a positive response to a query sent to xen-devel regarding
the need for this to happen for HVM guests (see
http://lists.xensource.com/archives/html/xen-devel/2011-03/msg01848.html).

The protection of arch.hvm_domain.irq.dpci accesses by is_hvm_domain()
is subject to confirmation that the field is used for HVM guests only
(see
http://lists.xensource.com/archives/html/xen-devel/2011-03/msg02004.html).

In the absence of any reply to these queries, and given the early
state of 4.2 development, I think it should be acceptable to take the
risk of having to later undo/redo some of this.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
19 files changed:
tools/libxl/libxl_dom.c
xen/arch/x86/domain.c
xen/arch/x86/domctl.c
xen/arch/x86/hvm/hpet.c
xen/arch/x86/hvm/hvm.c
xen/arch/x86/hvm/i8254.c
xen/arch/x86/hvm/intercept.c
xen/arch/x86/hvm/vioapic.c
xen/arch/x86/hvm/vpt.c
xen/arch/x86/irq.c
xen/arch/x86/mm.c
xen/arch/x86/physdev.c
xen/drivers/passthrough/io.c
xen/drivers/passthrough/vtd/ia64/vtd.c
xen/drivers/passthrough/vtd/x86/vtd.c
xen/include/asm-x86/domain.h
xen/include/asm-x86/hvm/domain.h
xen/include/asm-x86/hvm/vpt.h
xen/include/xen/iommu.h